/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.FuncionarioAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Departamento;
import br.com.sgs.entity.Funcionario;
import br.com.sgs.fachada.*;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.selectonemenu.SelectOneMenu;

/**
 *
 * @author Eric
 */

@ManagedBean(name="funcionarioEditMB")
@ViewScoped
public class FuncionarioEditMB implements Serializable {
      
    
    private Funcionario funcionarioselecionado;
    
    //Campos que receberão as informações de Aluno
    private String login;
    private String senha;
    private String cpf;
    private String email;
    private String nome;
    private String rg;
    private String telefone;
    private String celular;
    private String cargo;
 
    //Select One Menu
    private SelectOneMenu cmbStatus;
    private List<SelectItem> lsstatus = new ArrayList<SelectItem>();
    private int idstatus;
    
    //Select One Menu
    private SelectOneMenu cmbDepartamento;
    private List<SelectItem> lsdepartamento = new ArrayList<SelectItem>();
    private int iddepartamento;
    private Departamento departamentoselecionado;
        
    /**
     * Creates a new instance of InstituicaoNew
     */
    public FuncionarioEditMB() {
    }
    
    @PostConstruct 
    public void init(){
        
         String param = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idfuncionario");
            if (param != null) {

                FuncionarioIFachada ifach = new FuncionarioFachada();
                
                
                setFuncionarioselecionado(ifach.findFuncionarioById(Integer.parseInt(param)));
                if (getFuncionarioselecionado() != null) {
                    setarCampos();
                    popularCombos();
                }
                
            }
        
    }      

    public String salvar() {
        try {          
            
            getFuncionarioselecionado().setLogin(getLogin());
            getFuncionarioselecionado().setSenha(getSenha());
            getFuncionarioselecionado().setNome(getNome());
            getFuncionarioselecionado().setEmail(getEmail());
            getFuncionarioselecionado().setCargo(getCargo());
            getFuncionarioselecionado().setRg(getRg());
            getFuncionarioselecionado().setCpf(getCpf());
            getFuncionarioselecionado().setDepartamento(departamentoselecionado);
            getFuncionarioselecionado().setCelular(getCelular());
            getFuncionarioselecionado().setTelefone(getTelefone());
            getFuncionarioselecionado().setStatus(Integer.parseInt(getCmbStatus().getValue().toString()));
            
            IFachada ifach = new Fachada();
            ifach.alterar(getFuncionarioselecionado());

             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgSalvoSucesso"), ""));
          
            return "FUNCIONARIOLIST";

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("erroNaoEncontrado"), ""));
            e.printStackTrace();     
            return null;
        }
    }
    
    public void limparCampos() {
        try {

            setNome("");
            setLogin("");
            setEmail("");
            setCpf("");
            setRg("");
            setCelular("");
            setTelefone("");
            setCargo("");
            iddepartamento = 0;

        } catch (Exception e) {
            System.err.println("Erro no limparCampos");
        }

    }
 
     public void setarCampos() {
        try {

            setNome(getFuncionarioselecionado().getNome());
            setLogin(getFuncionarioselecionado().getLogin());
            setEmail(getFuncionarioselecionado().getEmail());
            setCpf(getFuncionarioselecionado().getCpf());
            setRg(getFuncionarioselecionado().getRg());
            setTelefone(getFuncionarioselecionado().getTelefone());
            setCelular(getFuncionarioselecionado().getCelular());
            setCargo(funcionarioselecionado.getCargo());
            iddepartamento = getFuncionarioselecionado().getDepartamento().getId();
            idstatus = funcionarioselecionado.getStatus();

        } catch (Exception e) {
            System.err.println("Erro no metodo setarCampos!");
        }
    }
     
    public String voltar() {
        try {
            return "ALUNOLIST";
        } catch (Exception e) {
            System.err.println("Erro no método voltar");
            return null;
        }
    }

    
    public void popularCombos() {
        try {
            
            for (DataValue d : FuncionarioAux.getStatusListaAll()) {
                getLsstatus().add(new SelectItem(d.getValue(), MessageBundleLoader.getMessage(d.getName())));
            }
            
             lsdepartamento.clear();
            
            DepartamentoIFachada fach = new DepartamentoFachada();
            List<Departamento> ls = fach.findDepartamento();
            System.out.println(ls.size());
                    for (Departamento departamento : ls) {
                lsdepartamento.add(new SelectItem(departamento.getId(), departamento.getDescricao()));
            }

        } catch (Exception e) {
            System.err.println("Erro no popularCombos");
        }

    }
    
    
    public void selecionarDepartamento() {
        try {

            iddepartamento = Integer.parseInt(getCmbDepartamento().getValue().toString());

            if (iddepartamento != 0) {
                
                DepartamentoIFachada ifach = new DepartamentoFachada();                
                departamentoselecionado = (ifach.findDepartamentoById(iddepartamento));
              
            } else {
                departamentoselecionado = null;
            }

        } catch (Exception e) {
          System.err.println("Erro no selecionarDepartamento");  
        }
    }

    /**
     * @return the funcionarioselecionado
     */
    public Funcionario getFuncionarioselecionado() {
        return funcionarioselecionado;
    }

    /**
     * @param funcionarioselecionado the funcionarioselecionado to set
     */
    public void setFuncionarioselecionado(Funcionario funcionarioselecionado) {
        this.funcionarioselecionado = funcionarioselecionado;
    }

    /**
     * @return the login
     */
    public String getLogin() {
        return login;
    }

    /**
     * @param login the login to set
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the rg
     */
    public String getRg() {
        return rg;
    }

    /**
     * @param rg the rg to set
     */
    public void setRg(String rg) {
        this.rg = rg;
    }

    /**
     * @return the telefone
     */
    public String getTelefone() {
        return telefone;
    }

    /**
     * @param telefone the telefone to set
     */
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    /**
     * @return the celular
     */
    public String getCelular() {
        return celular;
    }

    /**
     * @param celular the celular to set
     */
    public void setCelular(String celular) {
        this.celular = celular;
    }

    /**
     * @return the cmbStatus
     */
    public SelectOneMenu getCmbStatus() {
        return cmbStatus;
    }

    /**
     * @param cmbStatus the cmbStatus to set
     */
    public void setCmbStatus(SelectOneMenu cmbStatus) {
        this.cmbStatus = cmbStatus;
    }

    /**
     * @return the lsstatus
     */
    public List<SelectItem> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<SelectItem> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the idstatus
     */
    public int getIdstatus() {
        return idstatus;
    }

    /**
     * @param idstatus the idstatus to set
     */
    public void setIdstatus(int idstatus) {
        this.idstatus = idstatus;
    }

    /**
     * @return the cargo
     */
    public String getCargo() {
        return cargo;
    }

    /**
     * @param cargo the cargo to set
     */
    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    /**
     * @return the cmbDepartamento
     */
    public SelectOneMenu getCmbDepartamento() {
        return cmbDepartamento;
    }

    /**
     * @param cmbDepartamento the cmbDepartamento to set
     */
    public void setCmbDepartamento(SelectOneMenu cmbDepartamento) {
        this.cmbDepartamento = cmbDepartamento;
    }

    /**
     * @return the lsdepartamento
     */
    public List<SelectItem> getLsdepartamento() {
        return lsdepartamento;
    }

    /**
     * @param lsdepartamento the lsdepartamento to set
     */
    public void setLsdepartamento(List<SelectItem> lsdepartamento) {
        this.lsdepartamento = lsdepartamento;
    }

    /**
     * @return the iddepartamento
     */
    public int getIddepartamento() {
        return iddepartamento;
    }

    /**
     * @param iddepartamento the iddepartamento to set
     */
    public void setIddepartamento(int iddepartamento) {
        this.iddepartamento = iddepartamento;
    }

    /**
     * @return the departamentoselecionado
     */
    public Departamento getDepartamentoselecionado() {
        return departamentoselecionado;
    }

    /**
     * @param departamentoselecionado the departamentoselecionado to set
     */
    public void setDepartamentoselecionado(Departamento departamentoselecionado) {
        this.departamentoselecionado = departamentoselecionado;
    }

}
